High-speed packet streaming schemes are commonly used in transmitting real-time video and other digital media across a network. Because of the real-time nature of the data, the packet transmissions typically use a non-reliable protocol, without acknowledgment from the destination or retransmission by the source when packets are lost or corrupted. Therefore, in applications requiring high data availability, a source host may transmit multiple parallel, redundant streams of the data to the destination. Each packet is thus transmitted multiple times—once in each stream—over multiple different paths through the network—in order to increase the likelihood that at least one copy of each packet will be received intact at the destination.
In this sort of scheme, there is still no guarantee that all the packets in any given stream will reach the destination, nor can it be ensured that the packets will arrive at the destination in the order in which they were transmitted. Therefore, in many applications (such as broadcast or storage of the video data), the destination computer must store, reorder and interleave packets from the two (or more) received streams in order to reconstruct the data. This solution enables reliable video reconstruction, but at the cost of a substantial memory footprint and a heavy processing burden on the host processor, which increases data latency and can limit the data throughput.
Various schemes for handling data from redundant transmissions are known in the art. For example, U.S. Patent Application Publication 2009/0034633 describes a method for simultaneous processing of media and redundancy streams for mitigating impairments. The method comprises receiving a primary stream of encoded frames and a separate stream of redundant frames. The method further comprises decoding and reconstructing in parallel the frames in the primary stream and the separate stream of redundant frames, on a real-time basis, in accordance with a specified common clock reference. The method further comprises, upon determining that a frame in the primary stream exhibits an error or impairment, determining a decoded redundant frame in the separate stream that corresponds to the impaired frame, and substituting at least a portion of the information in the decoded redundant frame for a corresponding decoded version of the impaired frame.